#pragma once

namespace one_rag {
    typedef unsigned char utf8;
    typedef wchar_t wchar;
    #if defined __GNUC__ && (__GNUC__ >= 4)
    typedef __CHAR16_TYPE__ utf16;
    typedef __CHAR32_TYPE__ utf32;
    #elif defined(_MSC_VER)
    typedef wchar_t utf16;
    typedef unsigned int utf32;
    #endif

    #ifdef UNICODE
    typedef utf16 oschar;
    #else
    typedef char oschar;
    #endif

    typedef const oschar* string; // general string parameter type.

    #ifdef __LP64__
    // defined by GNUC at least for the char=8, short=16, int=32, long=64 model
    #endif

// Geometric types

  struct point {
      int x;
      int y;
  };

  struct size {
      int width;
      int height;
  };

  struct rect {
      struct point origin;
      struct size size;
  };


}
